package com.example.everying.service.content;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.everying.model.entity.content.ActivityThumb;
import com.example.everying.model.vo.content.ActivityArticleVo;

import java.util.List;
import java.util.Map;

/**
 * @program: everything
 * @description: 文章点赞服务层
 * @author: zw
 * @create: 2025-05-22 15:27
 **/
public interface ActivityThumbService extends IService<ActivityThumb> {

    /**
     * 点赞文章
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 点赞结果
     */
    boolean likeArticle(String articleId, String userId);

    /**
     * 取消点赞
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 取消结果
     */
    boolean unlikeArticle(String articleId, String userId);

    /**
     * 检查用户是否已点赞
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 是否已点赞
     */
    boolean hasLiked(String articleId, String userId);
    List<Map<String, Object>> getMessageList(String userId, Integer page, Integer limit);
    /**
     * 获取文章点赞数
     * @param articleId 文章ID
     * @return 点赞数
     */
    long getLikesCount(String articleId);

    /**
     * 同步所有待同步的点赞数据到数据库
     */
    void syncLikesToDatabase();

    /**
     * 文章点赞列表查询
     */
    List<ActivityArticleVo> getUserLikes(String userId);
    // ActivityThumbService.java 中添加
    /**
     * 批量检查用户是否已点赞文章
     */
    Map<String, Boolean> batchHasLiked(List<String> articleIds, String userId);

    /**
     * 批量获取文章点赞数
     */
    Map<String, Long> batchGetLikesCount(List<String> articleIds);
}
